/**
 * ---------------------------
 * Time: 2017/8/7 20:58.
 * Author: Cangshi
 * View: http://palerock.cn
 * ---------------------------
 */
define(['app', 'zepto'], function (app, $) {
    'use strict';
    app.service('configService', function (configDao, PromiseUtil, ArrayUtils, logger) {
        /**
         * 获取初始化配置
         * @param cb
         */
        this.getInitConfig = function (cb) {
            // Way - one [The fast speed but no order]
            var tasks = new PromiseUtil.ServiceTaskContainer();
            var _this = this;
            tasks.inService(
                {
                    method: configDao.findConfigByKey,
                    args: ['welcomeWords']
                },
                {
                    method: configDao.findConfigByKey,
                    args: ['colorSetting']
                },
                function (r) {
                    var isSuccess = true;
                    var error = [];
                    ArrayUtils.getPropertyDo(this, r.e, 'code', function (code, ele) {
                        if (!code || code != 200) {
                            error.push(ele);
                            isSuccess = false;
                        }
                    }, false);
                    if (!isSuccess) {
                        _this.setWelcomeWords('欢迎使用设备管理器', function () {
                            _this.setColorConfig([], function () {
                                $.alert('获取配置失败，已还原至默认.');
                            })
                        })
                    } else {
                        cb.call(window, ArrayUtils.parseKeyValue(r.data), r.e);
                    }
                }
            );

            // Way - two [Can point the order but it's relatively slow]
            // var resultList = [];
            // configDao.findConfigByKey('name', function (e, r) {
            //     // first do
            //     resultList.push({
            //         data: r,
            //         e: e
            //     });
            //     configDao.findConfigByKey('p', function (e, r) {
            //         // second do
            //         resultList.push({
            //             data: r,
            //             e: e
            //         });
            //         // return
            //         cb.call(window, resultList);
            //     });
            // })
        };

        /**
         * 设置欢迎语
         * @param message
         * @param cb
         */
        this.setWelcomeWords = function (message, cb) {
            configDao.updateConfig('welcomeWords', message, function (r, e) {
                if (e.code != 200) {
                    $.alert(e.message);
                } else {
                    cb.call(window, e.message);
                }
            })
        };

        /**
         * 设置颜色配置
         * @param color
         * @param cb
         */
        this.setColorConfig = function (color, cb) {
            configDao.updateConfig('colorSetting', color, function (r, e) {
                if (e.code != 200) {
                    $.alert(e.message);
                } else {
                    cb.call(window, e.message);
                }
            })
        }
    })
});